package com.dependencies.springdatajpa.controller;

import com.dependencies.springdatajpa.entity.Geographic;
import com.dependencies.springdatajpa.service.GeographicService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @author zhizhou   2024/9/24 09:54
 */
@RestController
@RequestMapping("/api/geographics")
public class GeographicController {
    @Autowired
    private GeographicService geographicService;
    
    /**
     * 获取行政区划列表(遍历查询数据库)
     * @param parentId 父级ID，可选参数，根节点传入null或不传
     * @return 行政区划列表
     */
    @GetMapping
    public List<Geographic> getGeographics(@RequestParam(value = "parentId", required = false) Long parentId) {
        // 如果parentId为空，设为0或null，根据实际情况
        if (parentId == null) {
            parentId = 0L; // 假设根节点的parentId为0
        }
        return geographicService.getGeographicListData(parentId);
    }
    
    /**
     * 获取行政区划列表（批量查询：一次性查询所有数据，并在内存中构建树结构，省市区大概3180多条，数据量相对还好，内存大概不到1M，500KB左右）
     * @param parentId 父级ID，可选参数，根节点传入null或不传
     * @return 行政区划列表
     */
    @GetMapping(value="/all")
    public List<Geographic> getGeographicsAll(@RequestParam(value = "parentId", required = false) Long parentId) {
        // 如果parentId为空，设为0或null，根据实际情况
        if (parentId == null) {
            parentId = 0L; // 假设根节点的parentId为0
        }
        return geographicService.getGeographicListDataAll(parentId);
    }
    
}
